package com.zouxw.utils.json.utils;

import java.awt.Color;
import java.awt.Font;

/**
 * 应用程序配置管理类
 * 集中管理所有配置常量，避免硬编码
 * 
 * @author zouxw
 * @version 1.0
 */
public class AppConfig {
    
    // ==================== 窗口配置 ====================
    /** 主窗口默认宽度 */
    public static final int WINDOW_WIDTH = 900;
    
    /** 主窗口默认高度 */
    public static final int WINDOW_HEIGHT = 700;
    
    /** 输入区域默认高度 */
    public static final int INPUT_AREA_HEIGHT = 200;
    
    /** 窗口标题 */
    public static final String WINDOW_TITLE = "JSON树状查看器 - 增强版 (Fastjson)";
    
    // ==================== 字体配置 ====================
    /** 默认字体名称 */
    public static final String DEFAULT_FONT_NAME = "Monospaced";
    
    /** 树形视图字体名称 */
    public static final String TREE_FONT_NAME = "Dialog";
    
    /** 默认字体大小 */
    public static final int DEFAULT_FONT_SIZE = 14;
    
    /** 图标字体大小 */
    public static final int ICON_FONT_SIZE = 12;
    
    /** 默认字体 */
    public static final Font DEFAULT_FONT = new Font(DEFAULT_FONT_NAME, Font.PLAIN, DEFAULT_FONT_SIZE);
    
    /** 树形视图字体 */
    public static final Font TREE_FONT = new Font(TREE_FONT_NAME, Font.PLAIN, DEFAULT_FONT_SIZE);
    
    // ==================== 图标配置 ====================
    /** 图标大小 */
    public static final int ICON_SIZE = 16;
    
    /** 对象图标颜色 */
    public static final Color OBJECT_ICON_COLOR = Color.BLUE;
    
    /** 数组图标颜色 */
    public static final Color ARRAY_ICON_COLOR = Color.MAGENTA;
    
    /** 字符串图标颜色 */
    public static final Color STRING_ICON_COLOR = Color.GREEN;
    
    /** 数字图标颜色 */
    public static final Color NUMBER_ICON_COLOR = Color.RED;
    
    /** 布尔值图标颜色 */
    public static final Color BOOLEAN_ICON_COLOR = Color.ORANGE;
    
    /** null值图标颜色 */
    public static final Color NULL_ICON_COLOR = Color.GRAY;
    
    /** 嵌套JSON图标颜色 */
    public static final Color NESTED_JSON_ICON_COLOR = Color.CYAN;
    
    // ==================== 搜索配置 ====================
    /** 搜索字段默认宽度 */
    public static final int SEARCH_FIELD_WIDTH = 15;
    
    /** 搜索高亮颜色 */
    public static final Color SEARCH_HIGHLIGHT_COLOR = Color.YELLOW;
    
    /** 搜索边框颜色 */
    public static final Color SEARCH_BORDER_COLOR = Color.RED;
    
    // ==================== 文件配置 ====================
    /** JSON文件扩展名 */
    public static final String JSON_FILE_EXTENSION = "json";
    
    /** JSON文件描述 */
    public static final String JSON_FILE_DESCRIPTION = "JSON文件";
    
    // ==================== 状态消息 ====================
    /** 就绪状态消息 */
    public static final String STATUS_READY = "就绪";
    
    /** JSON格式正确消息 */
    public static final String STATUS_JSON_VALID = "JSON格式正确";
    
    /** JSON解析成功消息 */
    public static final String STATUS_JSON_PARSED = "JSON解析成功";
    
    /** 值已更新消息 */
    public static final String STATUS_VALUE_UPDATED = "值已更新";
    
    /** 已添加属性消息 */
    public static final String STATUS_PROPERTY_ADDED = "已添加属性: ";
    
    /** 已添加数组元素消息 */
    public static final String STATUS_ARRAY_ITEM_ADDED = "已添加数组元素";
    
    /** 已删除节点消息 */
    public static final String STATUS_NODE_DELETED = "已删除节点";
    
    /** 已格式化JSON消息 */
    public static final String STATUS_JSON_FORMATTED = "已格式化JSON";
    
    /** 已压缩JSON消息 */
    public static final String STATUS_JSON_COMPRESSED = "已压缩JSON";
    
    // ==================== 错误消息 ====================
    /** JSON格式错误前缀 */
    public static final String ERROR_JSON_FORMAT = "JSON格式错误: ";
    
    /** JSON解析错误前缀 */
    public static final String ERROR_JSON_PARSE = "JSON解析错误: ";
    
    /** 读取文件错误前缀 */
    public static final String ERROR_FILE_READ = "读取文件错误: ";
    
    /** 保存文件错误前缀 */
    public static final String ERROR_FILE_SAVE = "保存文件错误: ";
    
    /** JSON处理错误前缀 */
    public static final String ERROR_JSON_PROCESS = "JSON处理错误: ";
    
    /** 更新JSON结构错误前缀 */
    public static final String ERROR_JSON_UPDATE = "更新JSON结构时出错: ";
    
    /** 更新JSON文本错误前缀 */
    public static final String ERROR_JSON_TEXT_UPDATE = "更新JSON文本时出错: ";
    
    // ==================== 对话框消息 ====================
    /** 请输入JSON字符串 */
    public static final String DIALOG_INPUT_JSON = "请输入JSON字符串";
    
    /** 请先选择一个对象节点 */
    public static final String DIALOG_SELECT_OBJECT = "请先选择一个对象节点";
    
    /** 请先选择一个数组节点 */
    public static final String DIALOG_SELECT_ARRAY = "请先选择一个数组节点";
    
    /** 请先选择一个节点 */
    public static final String DIALOG_SELECT_NODE = "请先选择一个节点";
    
    /** 只能在对象节点上添加属性 */
    public static final String DIALOG_ADD_TO_OBJECT = "只能在对象节点上添加属性";
    
    /** 只能在数组节点上添加元素 */
    public static final String DIALOG_ADD_TO_ARRAY = "只能在数组节点上添加元素";
    
    /** 不能删除根节点 */
    public static final String DIALOG_CANNOT_DELETE_ROOT = "不能删除根节点";
    
    /** 确定要删除选中的节点吗? */
    public static final String DIALOG_CONFIRM_DELETE = "确定要删除选中的节点吗?";
    
    /** null值不能编辑 */
    public static final String DIALOG_NULL_NOT_EDITABLE = "null值不能编辑";
    
    /** 无效的数字格式 */
    public static final String DIALOG_INVALID_NUMBER = "无效的数字格式: ";
    
    // ==================== 菜单和按钮文本 ====================
    /** 文件菜单 */
    public static final String MENU_FILE = "文件";
    
    /** 编辑菜单 */
    public static final String MENU_EDIT = "编辑";
    
    /** 打开菜单项 */
    public static final String MENU_OPEN = "打开";
    
    /** 保存菜单项 */
    public static final String MENU_SAVE = "保存";
    
    /** 退出菜单项 */
    public static final String MENU_EXIT = "退出";
    
    /** 格式化菜单项 */
    public static final String MENU_FORMAT = "格式化";
    
    /** 压缩菜单项 */
    public static final String MENU_COMPRESS = "压缩";
    
    /** 解析JSON按钮 */
    public static final String BUTTON_PARSE_JSON = "解析JSON";
    
    /** 搜索按钮 */
    public static final String BUTTON_SEARCH = "搜索";
    
    /** 清除按钮 */
    public static final String BUTTON_CLEAR = "清除";
    
    /** 搜索标签 */
    public static final String LABEL_SEARCH = "搜索:";
    
    /** JSON输入标签 */
    public static final String LABEL_JSON_INPUT = "JSON输入:";
    
    // ==================== 右键菜单 ====================
    /** 添加属性菜单项 */
    public static final String POPUP_ADD_PROPERTY = "添加属性";
    
    /** 添加数组元素菜单项 */
    public static final String POPUP_ADD_ARRAY_ITEM = "添加数组元素";
    
    /** 删除菜单项 */
    public static final String POPUP_DELETE = "删除";
    
    // ==================== 输入对话框 ====================
    /** 请输入属性名 */
    public static final String INPUT_PROPERTY_NAME = "请输入属性名:";
    
    /** 请输入属性值 */
    public static final String INPUT_PROPERTY_VALUE = "请输入属性值:";
    
    /** 请输入数组元素值 */
    public static final String INPUT_ARRAY_VALUE = "请输入数组元素值:";
    
    /** 编辑数值 */
    public static final String INPUT_EDIT_NUMBER = "编辑数值:";
    
    /** 编辑值 */
    public static final String INPUT_EDIT_VALUE = "编辑值:";
    
    // ==================== 对话框标题 ====================
    /** 添加属性标题 */
    public static final String TITLE_ADD_PROPERTY = "添加属性";
    
    /** 添加数组元素标题 */
    public static final String TITLE_ADD_ARRAY_ITEM = "添加数组元素";
    
    /** 编辑值标题 */
    public static final String TITLE_EDIT_VALUE = "编辑值";
    
    /** 编辑布尔值标题 */
    public static final String TITLE_EDIT_BOOLEAN = "编辑布尔值";
    
    /** 确认删除标题 */
    public static final String TITLE_CONFIRM_DELETE = "确认删除";
    
    /** 选择布尔值 */
    public static final String TITLE_SELECT_BOOLEAN = "选择布尔值:";
    
    // ==================== 私有构造函数 ====================
    /**
     * 私有构造函数，防止实例化
     */
    private AppConfig() {
        throw new UnsupportedOperationException("配置类不能被实例化");
    }
}
